#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <stdlib.h>

static int is_running = 1;

// 使用一些资源的函数
void use_resource() {
    printf("使用一些资源...\n");
}

// 释放使用的资源
void free_resource() {
    printf("释放资源... \n");
}

void exit_handler(int signum) {
    if (signum == SIGINT) {
        printf("接收到SIGINT信号 \n");
        is_running = 0;
    } else {
        printf("接收到SIGTERM信号 \n");
        free_resource();
        exit(0);
    }
}


int main(int argc, char const *argv[])
{
    // 注册结束的信号处理函数
    signal(SIGINT, exit_handler); // CTRL + C
    signal(SIGTERM, exit_handler); // kill进程


    use_resource();

    while(is_running) {
        printf("正在运行...\n");
        sleep(1);
    }

    free_resource();
    return 0;
}
